<?php
namespace Kuoqi\Dom{
class DomSelector{
	
	public $element = array();//本选择器包含的节点元素信息，特别注意，当前元素为列表信息喔，切记切记
	public $parent = null;//本节点包含的元素父级节点信息
	public $childs = array();//当前元素列表的子集元素信息
	
	
	//这个是最终的对象解释器
	public function __construct($selector){
		switch(get_class($selector)){
			case 'Kuoqi\Dom\DomNodelist':
				$this->element = $selector->items;
				$this->childs = array();
				$this->parent = null;
			break;
			default:die('请兼容属性['.get_class($selector).']进入本解释器');
		}
	}
	
	//获取第一个元素信息[获取第一个元素对象,获取出来为系统的对象信息]
	public function first(){
		return isset($this->element[0])?$this->element[0]:null;
	}
	
	//获取内容文本信息
	//默认只获取一个个元素的文本内容，如果是多个文本的话
	public function getText(){
		$dom = $this->first();
		return $dom?$dom->nodeValue:NULL;
	}
	
	//获取一个属性值
	public function getAttr($attrName){
		return $this->getAttribute($attrName);
	}
	//获取一个属性
	public function getAttribute($attrName){
		$dom = $this->first();
		return $dom?$dom->getAttribute($attrName):NULL;
	}
	//设置一个属性
	public function setAttr($attrName,$attrVal){
		return $this->setAttribute($attrName,$attrVal);
	}
	public function setAttribute($attrName,$attrVal){
		foreach($this->element as $k=>$dom){
			$dom?$dom->setAttribute($attrName,$attrVal):NULL;
		}
		return $this;
	}
	public function removeAttr($attrName){
		return $this->removeAttribute($attrName);
	}
	public function removeAttribute($attrName){
		foreach($this->element as $k=>$dom){
			$dom?$dom->removeAttribute($attrName):NULL;
		}
		return $this;
	}
	//删除自己
	public function remove(){
		foreach($this->element as $k=>$dom){
			$dom->parent->removeChild($dom);
		}
		return true;
	}
	
	
	//选择器
	static public function getSelector($seletor){
		//拆分这个选择器信息，因为没有那啥啥啥支持了，所以搞得很麻烦，需要自己手动
		//查看是否有属性信息包含在里面
		$selector = array();
		//第一步扣除属性选择器
		$status = preg_match_all('/\[(\w+)\=\"(\w+)\"\]/',$seletor,$list);
		if($status){
			foreach($list[0] as $k=>$v){	
				$selector['attr'][$list[1][$k]] = $list[2][$k];
			}
		}else{
			$selector['attr'] = array();	
		}
		//第二步获取class
		$status = preg_match_all('/\.([0-9a-zA-Z\-\_]+)/',$seletor,$list);
		if($status){
			foreach($list[0] as $k=>$v){	
				$selector['class'][] = $list[1][$k];
			}	
		}else{
			$selector['class'] = array();	
		}
		//第三步获取ID
		$status = preg_match_all('/\#([0-9a-zA-Z\-\_]+)/',$seletor,$list);
		if($status){
			foreach($list[0] as $k=>$v){	
				$selector['id'] = $list[1][$k];
			}	
		}else{
			$selector['id'] = '';	
		}
		//获取tag选择器
		$status = preg_match('/(\w+)/',$seletor,$list);
		if($status){
			$selector['tagname'] = $list[1];
		}else{
			$selector['tagname'] = '';	
		}
		return $selector;
	}
}}